'''
    接口传参方式之一：通过发送请求体（Request Body）来传递请求数据
    在 FastAPI，提倡使用 Pydantic 模型来定义请求体
    这篇文章会详细讲不使用 Pydantic 和 使用 Pydantic 发送请求体的栗子

    请求体并不是只有 POST 请求有，只不过 POST 更常见
    在 PUT、DELETE、PATCH 请求中都可以使用请求体
    其实，在 GET 请求中也可以用请求体，不过仅适用于非常极端的情况下，而且 Swagger API 并不会显示 GET 请求的请求体
'''

from typing import Dict
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.post("/items")
async def read_item(item: dict):
    return {"item": item}


# 用 Dict 代替 dict 的栗子

@app.post("/Dict/")
async def create_index_weights(weights: Dict[str, float]):
    return weights

'''
使用 Dict 相比直接用 dict 的好处
声明为 Dict[str, float]，FastAPI 会对每一个键值对都做数据校验，校验失败会有友好的错误提示
'''




if __name__ == "__main__":
    uvicorn.run(app="main:app", host="127.0.0.1", port=8000, reload=True, debug=True)
